Package de.yaams.extensions.ress

Source Code of de.yaams.extensions.ress.PreviewPanel

/**
*
*/
package de.yaams.extensions.ress;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import org.jdesktop.swingx.JXImageView;

import de.yaams.extensions.ress.audioplayer.Player;
import de.yaams.maker.helper.NetHelper;
import de.yaams.maker.helper.SystemHelper;
import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.IZoom;
import de.yaams.maker.helper.gui.YDialog;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.YProgressWindowRepeat;
import de.yaams.maker.helper.gui.YToolBar;
import de.yaams.maker.helper.gui.form.FormTextField;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.ress.RessRess;

/**
* @author abt
*
*/
public class PreviewPanel extends JPanel implements IZoom {
  private static final long serialVersionUID = -7065667324497904070L;

  private File file;
  private final JXImageView image;
  private final JPanel imagepanel;
  private final YToolBar bar;
  private transient Player player;

  /**
   * Create a new PreviewPanel
   */
  public PreviewPanel() {
    setLayout(new GridLayout(1, 1));
    imagepanel = new JPanel(new BorderLayout());
    setPreferredSize(new Dimension(320, 160));
    image = new JXImageView();
    // set content
    imagepanel.setBorder(BorderFactory.createEmptyBorder());
    imagepanel.add(new JScrollPane(image), BorderLayout.CENTER);

    // set toolbar
    bar = YFactory.installZoomlevel(new YToolBar(), this);
    bar.addSeparator();

    bar.add(YFactory.tb(I18N.t("Info about the file"), "info", new AE() {

      @Override
      public void run() {
        info();

      }
    }));

    bar.addSeparator();
    // add special toolbar buttons
    bar.add(YFactory.tb(I18N.t("View the file, with the default system viewer"), "view", new AE() {

      @Override
      public void run() {
        if (file != null) {
          SystemHelper.viewFile(file);
        }

      }
    }));

    // add toolbar buttons
    bar.add(YFactory.tb(I18N.t("Datei mit dem Systemeditor editieren"), "edit", new AE() {

      @Override
      public void run() {
        if (file != null) {
          SystemHelper.editFile(file);
        }

      }
    }));

    // add toolbar buttons
    bar.add(YFactory.tb(I18N.t("Edit the Graphic with the Image Editor of JH Labs"), "imageeditor", new AE() {

      @Override
      public void run() {
        if (file == null) {
          return;
        }

        // imageeditor exist?
        final File f = new File(YAamsCore.programPath, "imageeditor.jar");

        YProgressWindowRepeat y = new YProgressWindowRepeat("Starting " + f.getAbsolutePath(), "imageeditor");
        if (!f.exists()) {
          // dl it
          NetHelper.downloadFile(f, "http://www.yaams.de/file/plugins/ImageEditor.jar");
        }

        // check file
        if (RessRess.endWithExtention(file, new String[] { "ie", "jpg", "jpeg", "jpe", "gif", "png", "psd", "bmp", "pict", "tga",
            "ras", "pcx" })
            || !RessRess.endWithExtention(file, new String[] { "ie", "jpg", "jpeg", "jpe", "gif", "png", "psd", "bmp", "pict",
                "tga", "ras", "pcx" })
            && YDialog.askUser(I18N.t("Bild {0} wird nicht unterstützt.", file.getName()), "ress.imageeditor",
                "imageeditor_warn",
                I18N.t("Wahrscheinlich kann ImageEditor die Datei nicht öffnen. Soll Sie dennoch geöffnet werden?"),
                I18N.t("Trotzdem öffnen"), I18N.CANCEL, "imageeditor_ok", "cancel")) {
          // run it
          SystemHelper.runExternal(
              new String[] { "java", "-jar", "-Xms128m", "-Xmx512M", f.getAbsolutePath(), file.getAbsolutePath() }, true);
        }

        y.close();
      }
    }));

    imagepanel.add(bar, BorderLayout.NORTH);
  }

  /**
   * Show the tech. informations
   */
  protected void info() {
    // can show?
    if (file == null || image == null) {
      return;
    }

    // build form
    final FormBuilder f = new FormBuilder("preview.graphic");
    f.addHeader("basic", new FormHeader("", null));
    f.addElement("basic.path", new FormTextField(I18N.t("Pfad"), file.getAbsolutePath()));
    f.addElement(
        "basic.size",
        new FormTextField(I18N.t("Größe"), I18N.t("{0}x{1}x{2}", image.getWidth(), image.getHeight(), image.getImage()
            .getAccelerationPriority())));

    YDialog.showForm(file.getName(), "graphic_info", f);
  }

  /**
   * @param file
   *            the file to set
   */
  public void setFile(final File file) {
    this.file = file;
    removeAll();

    // no file?
    if (file == null) {
      return;
    }
    // witch file?
    final String f = file.getAbsolutePath();
    if (f.endsWith(".wav") || f.endsWith(".midi") || f.endsWith(".mid") || f.endsWith(".mp3") || f.endsWith(".ogg")) {
      // build panel
      JPanel p = new JPanel(new BorderLayout());
      final JLabel e = new JLabel();
      final JButton b = YFactory.b(I18N.t("Play {0}", file.getName()), "audio", null);
      b.setEnabled(true);
      b.addActionListener(new AE() {

        @Override
        public void run() {
          // play?
          if (player == null) {
            e.setText("");
            // play
            player = new Player(file);
            player.setErrorCode(new AE() {

              @Override
              public void run() {
                // set exception
                if (player != null && player.getEx() != null) {
                  e.setText(player.getEx().toString());
                }

              }
            });
            player.setEndCode(new AE() {

              @Override
              public void run() {
                // stop
                player.stop();
                player = null;

                // set button
                b.setText(I18N.t("Play {0}", file.getName()));

              }
            });
            player.start();

            // set button
            b.setText(I18N.t("Stop {0}", file.getName()));

          } else {

            // stop
            player.stop();
            player = null;

            // set button
            b.setText(I18N.t("Play {0}", file.getName()));

          }

        }
      });

      p.add(b, BorderLayout.NORTH);
      p.add(e, BorderLayout.CENTER);

      add(p);
      // add(SoundPlayer.getSoundPlayer(file));
      return;
    }

    // try to load
    try {
      // no file?
      // if (file == null) {
      // image.setImage(new BufferedImage(1, 1,
      // BufferedImage.TYPE_4BYTE_ABGR));
      // return;
      // }
      double zoom = image.getScale();

      // load image
      image.setImage(file);
      image.setScale(zoom);

      add(imagepanel);
      image.invalidate();
      image.revalidate();
      image.repaint();
      invalidate();
      revalidate();
      repaint();

    } catch (final Throwable t) {
      add(new JLabel(file.getName() + " is not supported: " + t));
      // YException.warn("Can not load the image " + file, t);

    }

  }

  @Override
  public double getZoomLevel() {
    return image.getScale();
  }

  @Override
  public void setZoomLevel(double scale) {
    image.setScale(scale);
  }

  @Override
  public Dimension getViewDimension() {
    return new Dimension(image.getImage().getWidth(null), image.getImage().getHeight(null));
  }

  @Override
  public Dimension getObjectDimension() {
    return imagepanel.getSize();
  }
}
TOP

Related Classes of de.yaams.extensions.ress.PreviewPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.